# -*- coding: utf-8 -*-
"""
------------------------------------------------------------------------------
    File Name:  cprofile_demo
    Author   :  wanwei1029
    Date     :  2018/10/19
    Desc     :
------------------------------------------------------------------------------
"""

from cProfile import Profile
import pstats
import re
import time
from sys import argv


def test_fun():
    re.compile("aaa|bbb")
    sleep_1s()


def sleep_1s():
    time.sleep(1)
    sleep_2s()


def sleep_2s():
    time.sleep(2)
    sleep_3s()


def sleep_3s():
    time.sleep(3)


def load_status(book_id):
    p = pstats.Stats()
    p.load_stats("E:\\nas\\spider\\profile\\{0}.out".format(book_id))
    p.strip_dirs().sort_stats(1).print_stats()


def demo():
    """
    排序的方式：-1: "stdname",0:  "calls", 1:  "time", 2:  "cumulative"
    输出明细：
    ncalls 方法调用次数
    tottime 函数总的运行时间（注：这个时间不包括子函数运行的时间，比如不包括time.sleep的时间)
    percall tottime/ncalls 函数平均每次的运行时间
    cumtime 函数包括及子函数一起，总的运行时间。
    percall cumtime/ncalls
    """
    prof = Profile()
    prof.enable()
    test_fun()
    prof.disable()
    prof.create_stats()
    prof.print_stats(sort=1)
    # prof.dump_stats("test.out")


if __name__ == '__main__':
    test_method = "load_status"
    if test_method == "demo":
        demo()
    elif test_method == "load_status":
        load_status(argv[1])

